package controle;

import java.util.ArrayList;

import dao.GenericoDAO;
import entidades.Aluno;
import entidades.Turma;

public class ControleAluno {

	@SuppressWarnings("unchecked")
	GenericoDAO dao = new GenericoDAO();
	
	//método para cadastrar aluno
	@SuppressWarnings("unchecked")
	public int cadastraAluno(Aluno a){
		Aluno al= (Aluno)dao.inserir(a);
		return al.getId_aluno();
	}
	//método para remover aluno
	@SuppressWarnings("unchecked")
	public void removerAluno(Aluno a){
		dao.remover(a);
	}
	//método para editar aluno
	@SuppressWarnings("unchecked")
	public void editaAluno(Aluno a){
		dao.editar(a);
	}
	//método para pesquisar aluno
	public Aluno pesquizarAluno(int id){
		return (Aluno) dao.consultarPorId(Aluno.class, id);
	}
	// método retorna lista de todos os alunos cadastrados
	@SuppressWarnings("unchecked")
	public ArrayList<Aluno> listarTodosAlunos(){
		return (ArrayList<Aluno>) dao.listar(Aluno.class);
	}
	//método retorna lista por paginação
	@SuppressWarnings("unchecked")
	public ArrayList<Aluno> listarTodosPaginacao(String pesquisa, int indice, int maximo){
		String campo = "nome";
		return (ArrayList<Aluno>) dao.listarPaginacao(campo, pesquisa, Aluno.class, indice, maximo);	 
	}
	//método retorna lista por turma
	@SuppressWarnings("unchecked")
	public ArrayList<Aluno> listarAlunosTurma(Turma t){	
		ArrayList<Aluno> lista= (ArrayList<Aluno>) dao.listar_porID(Aluno.class,"turma",t);
		for(int i=0;i<lista.size();i++){
			lista.get(i).setNotaAluno(""+lista.get(i).getNota());
			lista.get(i).setFrequenciaAluno(""+lista.get(i).getFrequencia());
		}
		return lista;
	}
	//método para lançar nota e falta
	public void lancaNota(ArrayList<Aluno> lista){
		for(int i=0;i<lista.size();i++){
			if(lista.get(i).getNotaAluno().equals("")){
				lista.get(i).setNota(-1);
			}else{
				lista.get(i).setNota(Float.parseFloat(lista.get(i).getNotaAluno()));
			}
			
			if(lista.get(i).getFrequenciaAluno().equals("")){
				lista.get(i).setFrequencia(-1);
			}else{
				lista.get(i).setFrequencia(Float.parseFloat(lista.get(i).getFrequenciaAluno()));
			}	
					
			//dao.editar(lista.get(i));
		}		
	}
	
	@SuppressWarnings("unchecked")
	public void lancaNota2(Aluno a){
		a.setNota(Float.parseFloat(a.getNotaAluno()));
		a.setFrequencia(Float.parseFloat(a.getFrequenciaAluno()));		
		dao.editar(a);		
	}
	
	public void lancaNota3(int id, String nota, String frequencia){
		float n;
		float f;
		if(nota.equals("")){
			n=-1;
		}else{
			n=new Float (nota);
		}
		
		if(frequencia.equals("")){
			f=-1;
		}else{
			f=new Float(frequencia);
		}	
		
		String hql = "update aluno set nota = '"+n+"' , frequencia='"+f+"' where id_aluno = "+id+" ";
		dao.executaHQL(hql);
	}
	
	@SuppressWarnings("unchecked")
	public void lanca_dados_certificado(int id_aluno, String num_registro, String livro, String folha){
		Aluno a=(Aluno)dao.consultarPorId(Aluno.class, id_aluno);
		a.getCertificado().setNum_registro(num_registro);
		a.getCertificado().setLivro(livro);
		a.getCertificado().setFolha(folha);
		dao.editar(a);
	}
	
	//método muda status do aluno
	public void mudaStatusAluno(int id_turma){
		String hql = "update aluno set situacao = 'Inativo' where turma_aluno = "+id_turma+" ";
		dao.executaHQL(hql);
	}
	
}
